FreeBSD 13 NFSv4 nfsuserd man(8) page 2019 中文译本
Table of Contents
1. 译者总注
1.1. 关于此译本
李守中是开源软件理念坚定的支持者,所以译本虽不是软件,但依旧仿照开源软件的协议发布:
- 无担保:本文作者不保证作品内容准确无误,亦不承担任何由于使用此文档所导致的损失。
- 自由使用:任何人都可以自由地 阅读/链接/打印 此文档,无需任何附加条件。
- 名誉权:任何人都可以自由地 转载/引用/再创作 此文档,但必须保留作者署名并注明出处。
如果读者发现作品中有错误的地方,劳请来信指出。任何提高作品质量的建议李守中都将虚心接纳。
1.2. 原文档来源
本文档根据 FreeBSD 13.2 NFS nfsuserd manpage (man 8 nfsuserd
) 翻译。
1.3. 译者的话
对于直译后无法准确描述软件行为的句子,李守中会根据软件行为对这些句子进行意译。
对于必须添加很多内容才能实现意译的句子,李守中会尽量用直译 + 译者注 的方式来翻译。
受限于李守中的中文水平,在对句子进行意译时可能会偏离作者的本意,请读者谨慎参考。
有能力的读者可以从此链接 FreeBSD_13_NFSv4_nfsuserd_man(8)_page_2019.txt 下载英文原文与本文做对照。
PS: 从遣词造句的混乱程度和排版的随意性来看,这篇文档的作者和 man 4 nfsv4
的作者应该是同一个人...
2. 名称
nfsuserd -- 为 NFSv4 服务加载用户和用户组的信息到内核,让所有版本的 NFS 支持 manage-gids 功能。
3. 摘要
nfsuserd [-domain <domain_name>] [-usertimeout <minutes>] [-usermax <max_cache_size>] [-verbose] [-force] [-manage-gids] [<num_servers>]
4. 描述
nfsuserd 将用户和用户组信息加载到内核的 NFSv4 模块中。对于基于 Kerberos 的 NFSv4,nfsuserd 必须同时在 server 和 client 上启动才能正常运行。对于不使用 Kerberos 的 NFSv4,nfsuserd 必须运行,除非所有 server 和 client 都配置为将 uid/gid 编号放入 owner 和 owner_group 字符串中。
译者注: server 和 client 都配置为将 uid/gid 编号放入 owner 和 owner_group 字符串中指的是将 FreeBSD 13 NFSv4 man(4) page 2019 中文译本 中提到过的 vfs.nfs.enable_uidtostring
和 vfs.nfsd.enable_stringtouid
两个参数配置为 1。
它还提供对 manage-gids 的支持,并且如果它被用于任何版本的 NFS,则必须在 server 上运行。
译者注: manage-gids 这个功能主要解决用户的属组超过 16 个以后,其余属组权限不生效的问题。
启动时,它将机器 DNS 域名、超时和缓存大小限制加载到内核中。然后它把用户和组信息预加载到缓存中,直到缓存大小上限并分叉 N 个子项 (默认为 4),在内核缓存未命中时使用这里的缓存来处理请求。nfsuserd:master 进程存在的唯一目的是结束 nfsuserd:slave 进程。向 nfsuserd:master 发送 SIGUSR1 信号即可停止 nfsuserd。
下面是可用的选项:
- -domain <domain_name>
这个选项覆盖了默认的 DNS 域名,该域名使用机器主机名的后缀获得,或者如果该名称不是 FQDN,则使用 getaddrinfo(3) 报告的规范名称。
- -usertimeout <minutes>
这个选项覆盖了默认的缓存实体的超时时间。设置更长的超时时间会有更好的性能,但如果有新的实例出现,则要等缓存过期之后才能看到新的实例。如果 user/group 数据库管理系统内几乎从不复用同样的用户名或者 uid,推荐设置更长的超时时间。默认值为 1 分钟。
- -usermax <max_cache_size>
覆盖缓存大小的默认上限。缓存越大,使用的内核内存越多,性能越好。如果系统内存够用,将其设为组和密码数据库中条目数的总和。默认值为 200。
- -verbose
如果使用了这个选项,syslog 里会有与 nfsuserd 相关的更多的日志信息。
- -force
当 nfsuserd 异常退出,且无法启动时,必须使用这个选项以重新启动 nfsuserd 进程。
- -manage-gids
让 NFS server 即 nfsd(8) 启用 manage-gids 功能。所有使用 AUTH_SYS 身份验证的 NFS 请求都从 RPC 请求中获取 uid,并使用服务器上 getgrouplist(3) 提供的该 uid 的组列表,而不是 RPC 身份验证器中提供的组列表。这可用于避免 AUTH_SYS 只支持 16 个组身份的限制。
- <num_servers>
指定要创建几个 nfsuserd server 进程,最大值 20。默认值 4,已经够用了。NFS server 应当运行足够的 nfsuserd server 进程,最终效果应该是在 NFS server 运行足够的时间后,使用 ps(1) 命令看到有一个或者两个 nfsuserd server 进程几乎不使用任何资源nfsuserd server 进程运行太少会对性能产生重大影响,而运行太多只会占用一些资源,例如进程表条目和交换空间。
5. 更多信息
getgrent(3), getgrouplist(3), getpwent(3), nfsv4(4), group(5), passwd(5), nfsd(8)
6. 历史
nfsuserd 工具在 2009 年随 NFSv4 测试子系统被引入。
7. BUGS
nfsuserd 使用 getgrent(3), getgrouplist(3) 和 getpwent(3) 库调用来解析请求,如果 server 处理这些请求失败,并且库函数没有返回值,程序会卡住。查看 group(5) 和 passwd(5) 以获取如何访问数据库的信息。
FreeBSD 13.0 2019.04.06